首页 > 试题广场 >

求小球落地5次后所经历的路程和第5次反弹的高度

[编程题]求小球落地5次后所经历的路程和第5次反弹的高度
  • 热度指数:155464 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?


数据范围:输入的小球初始高度满足 ,且保证是一个整数


输入描述:

输入起始高度,int型



输出描述:
分别输出第5次落地时,共经过多少米以及第5次反弹多高。
注意:你可以认为你输出保留六位或以上小数的结果可以通过此题。
示例1

输入

1

输出

2.875
0.03125
x = int(input())
print(float(23*x/8))
print(float(x/32))
发表于 2024-05-01 23:32:35 回复(0)
h = int(input())
zl = h
for i in range(1,5):
zl += h
h = h/2

print(zl)
print(h/2)
发表于 2023-10-19 14:37:39 回复(0)
h=int(input())
l=0
A=0
for i in range(5):
    l+=h+A
    h=h/2
    A=h
print(l)
print(h)
发表于 2023-03-20 20:21:52 回复(0)
def solution(h):
    print(2.875*h)
    print(0.03125*h)

solution(int(input()))

发表于 2022-11-11 22:08:23 回复(0)
数学推导一下:
1. 初始高度只加一次
2. 后续有反弹的过程,每次的高度*2才是路径
height = int(input())

H = [height]
for i in range(5):
    height = height / 2
    H.append(height)

print(sum(H[1:-1])*2 + H[0])
print(H[-1])


发表于 2022-09-02 17:30:46 回复(0)
H = int(input())
S = H
for i in range(5):   
    H *= 0.5
    S += H * 2
print('%.6f\n%.6f' % (S - 2 * H,H))

发表于 2022-08-30 20:35:07 回复(0)
def func(height, n): # 传入初始高度和落地次数
    s = 0 #表示总路程
    h = height / 2 #表示反弹高度,初始化为第一次落地反弹高度
    if n == 1:  # 第一次落地时,总路程只有一倍的落地高度
        s += h
    else:
        s = height  # 先把第一次的路程加上
        for i in range(n-1):
            s += 2*h
            h = h / 2 
    return s, h

m = int(input())
a, b = func(m, 5)
print(a)
print(b)
发表于 2022-08-25 14:42:52 回复(0)
确定这是中等题吗🤣

while True:
    try:
        n = float(input())
        print(n+n/2*2+n/4*2+n/8*2+n/16*2)
        print(n/32)
    except:
        break
发表于 2022-08-16 23:05:02 回复(0)
su=int(input())
#print(su*31/16)
#print(su/32)
sum=0
fant=su
i=1
'''
if i<=5:#???为啥用if就不走
    fant=su*(1/(2**i))
    sum=sum+su/2**(i-1)
    i=i+1
'''
while i<=5:
    fant=su*(1/(2**i))
    sum=sum+su/2**(i-1)
    i=i+1
print(sum)
print(fant)
发表于 2022-08-15 16:55:49 回复(0)
h = int(input())
s = 0
for i in range(2,6):
    s += 0.5**(i-1)*2*h
print(s+h)
print(0.5**5*h)

发表于 2022-08-13 19:41:29 回复(0)
ip = int(input())
print(ip*(1+1+2+2+4+4+8+8+16)/16)
print(ip/32)

发表于 2022-08-05 14:31:39 回复(0)
s = int(input())
A = (23/8)*s
B = s/32
print(A)
print(B)
发表于 2022-08-01 23:13:33 回复(1)
h = int(input())
print(46*h/16)
print(1/32*h)

发表于 2022-08-01 22:14:28 回复(0)
while True:
    try:
        init_height = float(input())
        
        total = init_height*(2+7/8)
        
        last = init_height/32
        
        print(f'{total:.6f}')
        print(f'{last:.6f}')
    except:
        break

数学计算题
发表于 2022-07-27 14:50:27 回复(0)
hhh我好喜欢那个按比例缩放的答案,但还是交一个自己写的吧 
def height(h,i):
    if i == 0:
        return h
    else:
        h = float(h/(2**i))
        return round(h,6)
h = int(input())  #这里最好修改为 h = float(input())
sum = h
for i in range(1,5):
    sum += 2 * height(h,i)
print(sum)
print(height(h, 5))
发表于 2022-07-26 11:29:49 回复(0)
#模拟求解,最后一段路程不算弹起距离,所以要减去
height = int(input())
count = 0
distance = 0
bounce_height = height
while count < 5:
    distance += bounce_height
    bounce_height = 0.5* bounce_height
    distance += bounce_height
    count += 1
distance -= bounce_height
print(distance)
print(bounce_height)

发表于 2022-07-20 22:34:46 回复(0)
python3 
define_1 = 1+0.5+0.5**2+0.5**3+0.5**4
define_2 = 0.5**5

while True:
    try:
        count = int(input())
        output_1 = 2 * define_1 * count - count
        print(output_1)
        output_2 = count * define_2
        print(output_2)
    except:
        break


发表于 2022-07-16 11:09:15 回复(0)
a = float(input())
b = 0
for i in range(5):
    b += a + a*0.5
    a = a*0.5
print(b-a)    # 最后一次落地不反弹,要减去a
print(a)

发表于 2022-07-12 22:08:51 回复(0)
n = int(input())
res = 0
for i in range(5):
    # 每次落地并弹起,小球经历1.5*n的路程
    res += 1.5 * n
    # 每次从地面弹起,小球经历n/2的路程
    n = n/2
# res为第五次弹起后经历的总路程,减去n得到第五次落地经历的总路程
print(res-n)
print(n)

发表于 2022-07-05 17:40:46 回复(0)